/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package pessoas.presenter;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import pessoas.collection.Usuarios;
import pessoas.model.Usuario;
import pessoas.serializacao.serializacaoArquivo;
import pessoas.view.UsuarioView;

/**
 *
 * @author Bush
 */
public class UsuarioPresenter {

    private UsuarioView view;
    private Usuarios usuarios;
    private DefaultTableModel tm;

    public UsuarioPresenter(Usuarios usuarios) {
        view = new UsuarioView(null, true);
        this.usuarios = usuarios;

        tm = new DefaultTableModel(
                new Object[][]{},
                new String[]{"Nome", "Senha"}) {

                    @Override
                    public boolean isCellEditable(int row, int col) {
                        return false;
                    }
                };
        
        carregarTabela(usuarios);

        view.getBtnCadastrar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                cadastrar();
            }
        });

        view.getBtnFechar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                view.dispose();
            }
        });

        view.setLocationRelativeTo(view);
        view.setVisible(true);
    }

    public void cadastrar() {
        try {
            String nome = view.getTxtNome().getText();
            String senha = view.getTxtSenha().getText();
            if(nome.equals("") || senha.equals(""))
                throw new Exception("Preencha os campos !!");
            if(nome.length() > 8 || nome.length() < 3 || senha.length() < 3 || senha.length()>8)
                throw new Exception("Usuário e senha deve conter no mínimo 3 caracteres e no máximo 8");
            Usuario usuario = new Usuario(nome, senha);
            usuarios.gravar(usuario);
            JOptionPane.showMessageDialog(null,"Usuário Cadastrado com Sucesso!!");
            carregarTabela(usuarios);
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
        }
    }

    public void carregarTabela(Usuarios u) {
        tm.setNumRows(0);
        for (int i = 0; i < u.getUsuarios().size(); i++) {
            String contato = u.getUsuarios().get(i).toString();
            String linha[] = contato.split(",");
            tm.addRow(linha);
        }
        view.getTabela().setModel(tm);
    }

}
